package com.habdqn.studentmanager.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.habdqn.studentmanager.bean.condition.BigDecimalCondition;
import com.habdqn.studentmanager.bean.condition.DateCondition;
import com.habdqn.studentmanager.bean.score.ClassScore;
import com.habdqn.studentmanager.bean.score.ClassScoreInfo;
import com.habdqn.studentmanager.bean.score.Score;
import com.habdqn.studentmanager.bean.score.StudentPoint;
import com.habdqn.studentmanager.util.MyBatisParam;

/**
 * @author Fan
 * 
 *         2017年7月18日
 * 
 */
public interface ScoreMapper {

    /**
     * 新增
     * 
     * @param bean
     */
    void insert(Score bean);

    /**
     * 删除
     * 
     * @param bean
     * @return
     */
    int delete(Score bean);

    /**
     * 修改
     * 
     * @param bean
     * @return
     */
    int update(Score bean);

    /**
     * 查询
     * 
     * @param bean
     * @return
     */
    Score find(Score bean);

    /**
     * 查询成绩列表
     * 
     * @param bean
     * @return
     */
    List<Score> findList(Score bean);
    
    /**
     * 查询成绩列表
     * 
     * @param bean
     * @return
     */
    List<Score> findList(@Param("bean") Score bean, @Param("scoreDate") DateCondition scoreDate,
            @Param("scorePoint") BigDecimalCondition scorePoint);
    
    /**
     * 查询班级成绩走向列表
     * @param param
     * @return
     */
    List<ClassScore> findClassScoreTrend(MyBatisParam param);
    
    /**
     * 根据班级查询学生最高分，最低分，平均分列表
     * @param param
     */
    List<StudentPoint> findStudentScoreByClass(MyBatisParam param);
    
    /**
     * 查询班级成绩列表
     * @param param
     * @return
     */
    List<ClassScoreInfo> findClassScoreList(MyBatisParam param);
}
